// VIP工具类
const vipUtil = {
  // 检查用户登录状态
  checkLoginStatus() {
    const app = getApp()
    const userInfo = app.globalData.userInfo || {}
    return {
      isLogin: userInfo.isLogin || false,
      userInfo: userInfo
    }
  },

  // 检查用户VIP状态
  checkVipStatus() {
    const { isLogin, userInfo } = this.checkLoginStatus()
    
    if (!isLogin) {
      return {
        isLogin: false,
        isVip: false,
        message: '请先登录'
      }
    }

    return {
      isLogin: true,
      isVip: userInfo.isVip || false,
      userInfo: userInfo
    }
  },

  // 检查VIP视频访问权限
  checkVipVideoAccess(chapter) {
    const { isLogin, isVip, message } = this.checkVipStatus()
    
    // 如果章节不是VIP专享，直接允许访问
    if (!chapter.isVipOnly) {
      return {
        canAccess: true,
        reason: 'free'
      }
    }

    // 如果用户未登录
    if (!isLogin) {
      return {
        canAccess: false,
        reason: 'not_login',
        message: '观看VIP视频需要先登录'
      }
    }

    // 如果用户已登录但不是VIP
    if (!isVip) {
      return {
        canAccess: false,
        reason: 'not_vip',
        message: '观看VIP视频需要开通VIP会员'
      }
    }

    // 用户是VIP，可以访问
    return {
      canAccess: true,
      reason: 'vip'
    }
  },

  // 显示登录提示弹窗
  showLoginModal(chapter, callback) {
    wx.showModal({
      title: '请先登录',
      content: '观看VIP视频需要先登录，是否立即登录？',
      confirmText: '立即登录',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          // 保存当前章节信息，登录后可以继续观看
          if (chapter) {
            wx.setStorageSync('pendingChapter', {
              courseId: chapter.courseId,
              chapterId: chapter.id,
              chapterTitle: chapter.title
            })
          }
          
          wx.navigateTo({
            url: '/pages/login/login'
          })
        }
        if (callback) callback(res.confirm)
      }
    })
  },

  // 显示VIP提示弹窗
  showVipModal(chapter, callback) {
    wx.showModal({
      title: '开通VIP',
      content: '观看VIP视频需要开通VIP会员，是否立即开通？',
      confirmText: '立即开通',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          wx.navigateTo({
            url: '/pages/membership/membership'
          })
        }
        if (callback) callback(res.confirm)
      }
    })
  },

  // 处理VIP视频访问
  handleVipVideoAccess(chapter, onSuccess, onFail) {
    const accessResult = this.checkVipVideoAccess(chapter)
    
    if (accessResult.canAccess) {
      // 可以访问，执行成功回调
      if (onSuccess) onSuccess(chapter)
    } else {
      // 不能访问，根据原因显示不同提示
      if (accessResult.reason === 'not_login') {
        this.showLoginModal(chapter, (confirmed) => {
          if (confirmed && onSuccess) {
            // 用户确认登录，可以继续
            onSuccess(chapter)
          } else if (onFail) {
            onFail(accessResult)
          }
        })
      } else if (accessResult.reason === 'not_vip') {
        this.showVipModal(chapter, (confirmed) => {
          if (confirmed && onSuccess) {
            // 用户确认开通VIP，可以继续
            onSuccess(chapter)
          } else if (onFail) {
            onFail(accessResult)
          }
        })
      } else if (onFail) {
        onFail(accessResult)
      }
    }
  },

  // 检查待播放的章节（用户登录后返回）
  checkPendingChapter(courseId, chapters, onChapterFound) {
    const pendingChapter = wx.getStorageSync('pendingChapter')
    if (pendingChapter && pendingChapter.courseId === courseId) {
      // 清除待播放章节信息
      wx.removeStorageSync('pendingChapter')
      
      // 找到对应的章节
      const chapter = chapters.find(ch => ch.id === pendingChapter.chapterId)
      if (chapter && onChapterFound) {
        onChapterFound(chapter)
      }
    }
  }
}

module.exports = vipUtil
